package chapter04.s01subclass.example02;
// 除了继承父类的属性和方法，子类也可以定义 自己的属性和方法。
// 规则： 1. 类只支持单继承，不允许多重继承
//       2. 多个类可以继承一个父类
//       3. 多层继承也是可以的
//       4. 子类不能直接访问父类中的私有成员，子类可以调用父类的非私有方法，但是不能调用父类的私有成员

// 定义Animal类
class Animal {
    private String name;                // 定义name属性
    private int age;                    // 定义age属性

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// 定义Dog类继承Animal类
// 除了继承父类的属性和方法，子类也可以定义 自己的属性和方法。
// Dog类扩充了Animal类，增加了color属性及getColor()和setColor()方法。
class Dog extends Animal {
    private String color; // 定义color属性

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

// 定义测试类
public class Example02 {
    public static void main(String[] args) {
        Dog dog = new Dog();    // 创建一个Dog类的实例对象

        dog.setName("牧羊犬");   // 此时访问的方法时父类中的，子类中并没有定义
        dog.setAge(3);           // 此时访问的方法时父类中的，子类中并没有定义

        dog.setColor("黑色");
        System.out.println("名称：" + dog.getName() + ",年龄：" + dog.getAge() + ", 颜色：" + dog.getColor());
    }
}
